package edu.gdpu.bytecode;

/**
 * @author mazebin
 * @date 2021年 07月09日 16:13:21
 * 测试即时编译
 */
public class JITCompiler {
    public static void main(String[] args) {
        for (int i = 0; i < NUM; i++) {
            calcSum();
        }
    }
    public static final int NUM = 15000;

    public static int doubleValue(int j) {
        for (int i = 0; i < 100000; i++) ;
        return j * 2;
    }

    public static long calcSum() {
        long sum = 0;
        for (int i = 0; i < 100; i++) {
            sum += doubleValue(i);
        }
        return sum;
    }
    /**
     *  127   28 %     3       edu.gdpu.bytecode.JITCompiler::doubleValue @ 2 (18 bytes)
     *     127   27       1       sun.instrument.TransformerManager::getSnapshotTransformerList (5 bytes)
     *     127   29       3       edu.gdpu.bytecode.JITCompiler::doubleValue (18 bytes)
     *     127   30 %     4       edu.gdpu.bytecode.JITCompiler::doubleValue @ 2 (18 bytes)
     *     128   28 %     3       edu.gdpu.bytecode.JITCompiler::doubleValue @ -2 (18 bytes)   made not entrant
     *     128   31       4       edu.gdpu.bytecode.JITCompiler::doubleValue (18 bytes)
     *     128   29       3       edu.gdpu.bytecode.JITCompiler::doubleValue (18 bytes)   made not entrant
     *     129   32       3       edu.gdpu.bytecode.JITCompiler::calcSum (26 bytes)
     *     129   33 %     4       edu.gdpu.bytecode.JITCompiler::calcSum @ 4 (26 bytes)
     *     130   34       3       java.lang.Math::max (11 bytes)
     *     131   35       3       java.lang.String::indexOf (7 bytes)
     *     131   36       4       edu.gdpu.bytecode.JITCompiler::calcSum (26 bytes)
     *     132   32       3       edu.gdpu.bytecode.JITCompiler::calcSum (26 bytes)   made not entrant
     *
     =
     */
}
